<!doctype html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Document</title>
    </head>
    <body>
        <!-- <script>
            // 1. 实现树形结构, pid就是每个成员的父级
            let data = [
                { id: 1, pid: 0 },
                { id: 2, pid: 1 },
                { id: 3, pid: 0 },
                { id: 4, pid: 2 },
            ];

            //       let tree={

            //       };
            //       for( let item of data ){
            //         if(tree[item.pid] == undefined){
            //           tree[item.pid] =[];
            //         }
            //         tree[item.pid].push(item)
            //       }

            //       function build(pid){
            //         let result=[];
            //         if(tree[pid]!== undefined){
            //           for(let item of tree[pid]){
            //             let child = build(item.id);
            //             if( child.length >0){
            //               item.children = child;
            //             }
            //             result.push(item);
            //           }
            //         }
            //         return result;
            //       }

            // let treeData = build(0);
            // console.log(JSON.stringify(treeData))

            // 2. 不修改代码的情况下, 实现修改 obj 的内容
            const test = (() => {
                let obj = {
                    a: '变量a',
                    b: '变量b',
                };
                return {
                    get: (k) => {
                        return obj[k];
                    },
                    set: (k, v) => {
                        obj[k] = v;
                    },
                };
            })();
            console.log(test.get('c'));
            test.set('a', 'd');
            console.log(test.get('a'));

            // 3. 得出以下结果, 并且说明原因
            window.number = 2;
            let obj = {
                number: 3,
                db: (function () {
                    this.number *= 4;
                    return function () {
                        this.number *= 5;
                    };
                })(),
            };
            let db = obj.db;
            db(); //调用db，局部对象的number属性现在等于60
            obj.db(); //300（60乘以5）
            console.log(window.number); // 输出全局对象的number属性，它仍然是2，因为在这个作用域中没有改变它
            console.log(obj.number); //300
        </script> -->
    </body>
</html>
